package com.cloud.animationtestdemo.utils

import kotlin.math.pow

/**
 * @author: njb
 * @date:   2025/1/3 21:19
 * @desc:   描述
 */
object BezierCurveUtil {
    // 计算二次贝塞尔曲线上对应参数t的点的坐标
    fun calculateQuadraticBezierPoint(t: Float, p0: FloatArray, p1: FloatArray, p2: FloatArray): FloatArray {
        val result = FloatArray(2)
        result[0] = ((1 - t).toDouble().pow(2.0) * p0[0] + 2 * t * (1 - t) * p1[0] + t.toDouble()
            .pow(2.0) * p2[0]).toFloat()
        result[1] = ((1 - t).toDouble().pow(2.0) * p0[1] + 2 * t * (1 - t) * p1[1] + t.toDouble()
            .pow(2.0) * p2[1]).toFloat()
        return result
    }
}